<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wickr-crypto-c: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">wickr-crypto-c
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Data Structures</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__buffer.html" target="_self">wickr_buffer</a></td><td class="desc">Represents an array of bytes and the length of the allocation associated with those bytes </td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__cipher.html" target="_self">wickr_cipher</a></td><td class="desc">Represents a cipher that can be used in the crypto_engine. This meta object holds parameters for the cipher algorithms and maintains an identifier that can be used to look up the desired parameters for an algorithm </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__cipher__key.html" target="_self">wickr_cipher_key</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__cipher__result.html" target="_self">wickr_cipher_result</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__crypto__engine.html" target="_self">wickr_crypto_engine</a></td><td class="desc">Interface to a set of cryptographic operations used throughout the library. Currently the default implementation of this can be found along with documentation in <a class="el" href="openssl__suite_8h_source.html">openssl_suite.h</a> and <a class="el" href="kdf_8h_source.html">kdf.h</a> </td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ctx.html" target="_self">wickr_ctx</a></td><td class="desc">Wickr encryption context for high level management of sending / receiving packets using the Wickr protocol </td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ctx__gen__result.html" target="_self">wickr_ctx_gen_result</a></td><td class="desc">Output of a context generation </td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ctx__packet.html" target="_self">wickr_ctx_packet</a></td><td class="desc">Parsed inbound wickr packet that has yet to be decoded by this context </td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__decode__result.html" target="_self">wickr_decode_result</a></td><td class="desc">Packet decoding result </td></tr>
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__dev__info.html" target="_self">wickr_dev_info</a></td><td class="desc">Device Information used to make a uniquely identifying set of data for each context running the Wickr Protocol </td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__digest.html" target="_self">wickr_digest</a></td><td class="desc">Digest function parameters </td></tr>
<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ec__curve.html" target="_self">wickr_ec_curve</a></td><td class="desc">Metadata about curve types to help with key generation, and signatures </td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ec__key.html" target="_self">wickr_ec_key</a></td><td class="desc">Representation of public and private Elliptic Curve Keypair information as buffers </td></tr>
<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ecdh__cipher__ctx.html" target="_self">wickr_ecdh_cipher_ctx</a></td><td class="desc">A cipher context designed to modularize the ECDH_HKDF_AES256 workflow </td></tr>
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ecdsa__result.html" target="_self">wickr_ecdsa_result</a></td><td class="desc">Elliptic Curve Digital Signature Algorithm Result </td></tr>
<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__encoder__result.html" target="_self">wickr_encoder_result</a></td><td class="desc">Result of a packet encoding operation </td></tr>
<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ephemeral__info.html" target="_self">wickr_ephemeral_info</a></td><td class="desc">Message destruction control metadata </td></tr>
<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__ephemeral__keypair.html" target="_self">wickr_ephemeral_keypair</a></td><td class="desc">Represents a key pair used for message key exchanges within the Wickr Messaging Protocol </td></tr>
<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__fingerprint.html" target="_self">wickr_fingerprint</a></td><td class="desc">A fingerprint representation of a combination of signature keys / identifiers </td></tr>
<tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__identity.html" target="_self">wickr_identity</a></td><td class="desc">A signing identity on the Wickr system </td></tr>
<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__identity__chain.html" target="_self">wickr_identity_chain</a></td><td class="desc">Represents a root -&gt; node relationship as well as it's signature status </td></tr>
<tr id="row_21_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__kdf__algo.html" target="_self">wickr_kdf_algo</a></td><td class="desc">Metadata associated with a particular KDF function </td></tr>
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__kdf__meta.html" target="_self">wickr_kdf_meta</a></td><td class="desc">Represents the information the KDF function will need along with it's input to derive a particular output </td></tr>
<tr id="row_23_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__kdf__result.html" target="_self">wickr_kdf_result</a></td><td class="desc">Represents the result of a KDF function execution </td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__key__exchange.html" target="_self">wickr_key_exchange</a></td><td class="desc">Public key exchange protected data. After a shared secret is generated using a public key with identifier 'key_id', and run through a KDF, it is used to encrypt data to be protected by the exchange and the ciphertext is stored in 'exchange_ciphertext' </td></tr>
<tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__key__exchange__set.html" target="_self">wickr_key_exchange_set</a></td><td class="desc">A collection of key exchanges for a set of recipients. The data protected inside 'exchange_ciphertext' for each recipient is derived by each recipient node using their individualized key exchange. See Wickr white paper 'Prepare Packet Header' section for more information </td></tr>
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__node.html" target="_self">wickr_node</a></td><td class="desc">Represents a message destination at a point in time </td></tr>
<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__packet.html" target="_self">wickr_packet</a></td><td class="desc">An encrypted packet made with the Wickr protocol </td></tr>
<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__packet__meta.html" target="_self">wickr_packet_meta</a></td><td class="desc">Control metadata found in the encrypted payload of a packet </td></tr>
<tr id="row_29_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__parse__result.html" target="_self">wickr_parse_result</a></td><td class="desc">Result from parsing an inbound packet </td></tr>
<tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__payload.html" target="_self">wickr_payload</a></td><td class="desc">The encrypted body content of a Wickr packet </td></tr>
<tr id="row_31_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__root__keys.html" target="_self">wickr_root_keys</a></td><td class="desc">Root level crypto keys for signatures, local encryption, and remote encryption </td></tr>
<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__storage__keys.html" target="_self">wickr_storage_keys</a></td><td class="desc">Key's used for the client to encrypt data meant for itself, and not for other clients </td></tr>
<tr id="row_33_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__stream__ctx.html" target="_self">wickr_stream_ctx</a></td><td class="desc">A context that is used for encrypting or decrypting a sequenced stream of data packets The stream context manages the state of stream operations including key evolution management based on the sequence number of the being encrypted / decrypted. The stream context is assigned a direction, and can only be used for encoding OR decoding of packets, and not both </td></tr>
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__stream__iv.html" target="_self">wickr_stream_iv</a></td><td class="desc">A deterministic random IV generator using a 64 byte secure random seed and HMAC-SHA512 </td></tr>
<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__stream__key.html" target="_self">wickr_stream_key</a></td><td class="desc">A data structure representing the stream encoding / decoding key material A stream key holds information about the key material used for cipher operations as well as it's next evolution key and the number of packets this key should be used to encode or decode before evolution takes place </td></tr>
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__transport__callbacks.html" target="_self">wickr_transport_callbacks</a></td><td class="desc">Callbacks to notify the user of events within the transport </td></tr>
<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwickr__transport__ctx.html" target="_self">wickr_transport_ctx</a></td><td class="desc">Transport context to manage the state machine of a point to point connection using fundamentals of the Wickr protocol as building blocks </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</body>
</html>
